const fs = require('fs');
const crypto = require('crypto');
const path = require('path');

/**  
 * 计算图片的 MD5 哈希值  
 * @param {string} filePath - 图片文件的路径  
 * @returns {Promise<string>} - 返回 MD5 哈希值的 Promise  
 */
async function calculateImageMD5(filePath) {
    return new Promise((resolve, reject) => {
        // 创建一个文件流  
        const stream = fs.createReadStream(filePath);
        // 创建一个 hash 对象  
        const hash = crypto.createHash('md5');
        stream.on('data', function (data) {
            // 在数据块到达时，更新 hash 对象  
            hash.update(data, 'binary');
        });
        stream.on('end', function () {
            // 当没有更多数据时，计算 hash 值  
            const md5 = hash.digest('hex');
            resolve(md5);
        });
        stream.on('error', function (err) {
            reject(err);
        });
    });
}

// 使用示例  
// const filePath = '/images/18674167d277a3da299c9b000.png';
const filePath = path.join(__dirname,'../../public/images/18674167d277a3da299c9b000.png')
calculateImageMD5(filePath)
    .then(md5 => {
        console.log(`MD5: ${md5}`);
    })
    .catch(err => {
        console.error('Error calculating MD5:', err);
    });

module.exports ={
    calculateImageMD5
}